
package com.aasa.siappsap.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;

import org.apache.log4j.Logger;

import com.lowagie.text.*;
           
public class GenerarReporteDao extends AccesoDao{
	
	private static Logger objPv_log = Logger.getLogger(GenerarReporteDao.class.getName());
	protected CallableStatement objPt_cs = null;
	
	public GenerarReporteDao()	throws AccesoDaoException {
		super();
	}
	
	
public StringBuffer obtenerContenidoReporte(String strA_idUsuario, String strA_idReporte) throws AccesoDaoException, DocumentException{		
		
		StringBuffer strPv_textoReporte = new StringBuffer();
		
		try{
			objPt_conn = objPt_dataSource.getConnection();
			//CallableStatement cs = null;
			objPt_cs = objPt_conn.prepareCall("{call SIAPPSPK_REPORTE_PDCII.SIAPPNSP_LISTA_REPORTE_PDCII (?,?,?) }");
			objPt_cs.setString(1,strA_idUsuario);
			objPt_cs.setString(2,strA_idReporte);
			objPt_cs.registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR);
			objPt_cs.execute();
			objPt_rs=(ResultSet)objPt_cs.getObject(3);
			
			while(objPt_rs.next()){
				strPv_textoReporte.append(objPt_rs.getString(5)).append("\n");
			}
						
		}catch(SQLException e){
			strA_idReporte="";
			throw new AccesoDaoException("No se pudo ejecutar la consulta " , e );		   
		}
		finally {
			closeResultSet(objPt_rs);
			closeCallableStatement(objPt_cs);
			closeConnection(objPt_conn);
		}		
		return strPv_textoReporte;		
	}
	
	public Connection getConnectionReporte() throws SQLException{
		return objPt_dataSource.getConnection();
	}
	
	public String getIdGeneradoReporte(String strA_idUsuario, String strA_idCentro, java.sql.Date objA_fecha, String strA_idHorno) throws AccesoDaoException, DocumentException{
		SimpleDateFormat objL_sdf = new SimpleDateFormat("ddMMyy");

		return strA_idCentro + objL_sdf.format(objA_fecha) + obtenerCodigoReporte(strA_idHorno);
	
	}
	
	public String obtenerCodigoReporte(String strA_idHorno) throws AccesoDaoException, DocumentException{		
		String strL_callFunction = "";
		String strL_codigoReporte = "";
		try{
			if(strA_idHorno.equals("HE1")){
				strA_idHorno= "1";
			}else if(strA_idHorno.equals("HC1")){
				strA_idHorno= "2";				
			}
			
			strL_callFunction="{? = call SIAPPSPK_REPORTE_PDCII.SIAPPNSP_CODIGO_TIPO_REPORTE('"+strA_idHorno+"') }";
			objPt_conn = objPt_dataSource.getConnection();
			
			objPt_cs = objPt_conn.prepareCall(strL_callFunction);
			
			//objPt_cs.setString(1,strA_idHorno);
			objPt_cs.registerOutParameter(1, oracle.jdbc.OracleTypes.VARCHAR);
			
			objPt_cs.execute();
			
			strL_codigoReporte=objPt_cs.getString(1);
			
			
		}catch(SQLException e){
			throw new AccesoDaoException("No se pudo ejecutar la consulta " , e );		   
		}
		finally {
			closeResultSet(objPt_rs);
			closeCallableStatement(objPt_cs);
			closeConnection(objPt_conn);
		}		
		return strL_codigoReporte;		
	}
	

	public void ejecProcReporte(String strA_idCentro, String strA_fecha, String strA_idHorno , String strA_usuario, String strA_idReporte) throws AccesoDaoException{		
		
		String strL_callH1 = "{ ? = call SIAPPSPK_REPORTE_PDCII.SIAPPSSF_HORNO_ELECTRICO('"+strA_idCentro+"', '"+strA_fecha+"', '"+strA_idHorno+"', '"+strA_usuario+"', '"+strA_idReporte+"') }";
		String strL_callH2 = "{ ? = call SIAPPSPK_REPORTE_PDCII.SIAPPSSF_HORNO_CUCHARA('"+strA_idCentro+"', '"+strA_fecha+"', '"+strA_idHorno+"', '"+strA_usuario+"', '"+strA_idReporte+"') }";
		try{
			int numL_index = 1;
			objPt_conn = objPt_dataSource.getConnection();
			if(strA_idHorno.equals("HE1")){
				objPt_cs = objPt_conn.prepareCall(strL_callH1);
			}else if(strA_idHorno.equals("HC1")){
				objPt_cs = objPt_conn.prepareCall(strL_callH2);
			}

			objPt_cs.registerOutParameter(numL_index, oracle.jdbc.OracleTypes.NUMBER);
			objPt_cs.execute();

		}catch(SQLException e){
			throw new AccesoDaoException("No se pudo ejecutar la consulta " , e );		   
		}
		finally {
			closeResultSet(objPt_rs);
			closeCallableStatement(objPt_cs);
			closeConnection(objPt_conn);
		}		
	}
	
}
